The term Service-Oriented Architecture (SOA) generally refers to a recent software strategy that discrete functions from enterprise applications into interoperable, standards-based services, which can then be combined with other services and reused to meet particular business needs. Thus, using SOA, functionality provided by applications (from potentially multiple vendors) can be “exposed” as one or more services, and then “orchestrated” (e.g., using orchestration capabilities like Business Process Execution Language (BPEL)) into new composite applications. These composite applications can be developed to support an organization's business processes.
Service Component Architecture (SCA) is a software technology created by major software vendors, including IBM, Oracle, and TIBCO. SCA describes a model for building applications and systems using SOA principles, and further builds on open standards, such as Web services, to extend and complement existing SOA approaches.
A basic aspect of SCA is a composite, which is a unit of deployment and includes services that can be accessed remotely. A composite is made up of one or more components, which may each be directed to performing a particular task. Components offer their function as services, which can either be used by other components within the same module or which can be made available for use outside the module through entry points. Components may also depend on services provided by other components—either local or remote—and are commonly called references. References can either be linked to services provided by other components in the same composite, or references can be linked to services provided outside the composite, which potentially can be provided by other composite. Also included within a composite are linkages between references and services, which are referred to as wires.
Over time, software complexity continues to rise and thus, SOA applications similarly increase in complexity. For example, an application may include many composites interacting with each other and other external systems, and each composite may include multiple components. With this increased complexity, then, it becomes tremendously difficult to manage these applications. For example, when the performance of the application is negatively impacted, it can be tremendously difficult to identify which, if any, of the portions of a large SOA application are responsible for the performance degradation, and moreover, why those portions are not being performant.
Accordingly, there is a need for easier maintenance, fault detection, and troubleshooting of complex SOA applications.